package com.fenghongzhang.lib_core.utils;

import android.text.TextUtils;
import android.util.Log;

import com.alibaba.android.arouter.BuildConfig;

import org.apache.log4j.Logger;

/**
 * Created by ZengCS on 2017/9/5.
 * E-mail:zengcs@vip.qq.com
 * Add:中国成都
 */

public class JLogUtil {
    public static final String TAG = "JCZY/D";
    public static final String TAG_STEP = "Debug/Step";
    public static final String TAG_DOWNLOAD = "Debug/Download";
    private static Logger log = Logger.getLogger(TAG);
    private static boolean isDebug = BuildConfig.DEBUG;
    private static boolean useLog4j = !BuildConfig.DEBUG;

    public static void logDownload(String log) {
        i(TAG_DOWNLOAD, log);
    }

    public static void e(String tag, String msg) {
        if (TextUtils.isEmpty(msg)) return;
        Log.e(tag, msg);
        if (useLog4j)
            log.error((tag.equals(TAG) ? "" : "[" + tag + "]") + msg);
    }

    public static void e(Throwable e) {
        log.error("------------------------------------------------------------");
        log.error(Log.getStackTraceString(e));
        log.error("------------------------------------------------------------");
    }

    public static void e(String tag, String msg, Throwable e) {
        Log.e(tag, msg, e);
        if (useLog4j)
            if (e != null)
                e(e);
            else {log.error((tag.equals(TAG) ? "" : "[" + tag + "]") + msg);}

    }

    public static void w(String tag, String msg) {
        Log.w(tag, msg);
        if (useLog4j) {
            log.warn((tag.equals(TAG) ? "" : "[" + tag + "]") + msg);
        }
    }

    public static void i(String tag, String msg) {
        if (isDebug)
            Log.i(tag, msg);
        if (useLog4j)
            log.info((tag.equals(TAG) ? "" : "[" + tag + "]") + msg);
    }

    public static void d(String tag, String msg) {
        if (isDebug)
            Log.w(tag, msg);
        if (useLog4j)
            log.info((tag.equals(TAG) ? "" : "[" + tag + "]") + msg);
    }

    public static void http(String msg){
        String tag = "okHttp";
        if (isDebug)
            Log.w("okHttp", msg);
        if (useLog4j)
            log.info((tag.equals(TAG) ? "" : "[" + tag + "]") + msg);
    }

    public static void v(String tag, String msg) {
        if (isDebug)
            Log.v(tag, msg);
        if (useLog4j)
            log.info((tag.equals(TAG) ? "" : "[" + tag + "]") + msg);
    }

    // 无TAG方法
    public static void e(String msg) {
        e(TAG, msg);
    }

    public static void e(String msg, Throwable e) {
        e(TAG, msg, e);
    }

    public static void w(String msg) {
        w(TAG, msg);
    }

    public static void i(String msg) {
        i(TAG, msg);
    }

    public static void d(String msg) {
        d(TAG, msg);
    }

    public static void v(String msg) {
        v(TAG, msg);
    }

    public static void methodStart(String msg) {
        w(TAG, "******************** Start " + msg + " ********************");
    }

    public static void methodStep(String msg) {
        w(TAG, "* --> " + msg);
    }

    public static void methodStepWithTime(String msg) {
        w(TAG_STEP, "[" + System.nanoTime() + "] --> " + msg);
    }

    public static void methodStepError(String msg) {
        e(TAG, "* !!! " + msg);
    }

    public static void methodEnd(String msg) {
        w(TAG, "******************** End " + msg + " ********************");
    }

    public static void onReceiveEvent(String msg) {
        w(TAG, "【EventBus-Receive】" + msg);
    }

    public static void postEvent(String msg) {
        w(TAG, "【EventBus-Post】" + msg);
    }
}
